package com.solution.admin.auth.service;

import java.util.List;
import java.util.Map;

import com.solution.admin.auth.entity.RoleEntity;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;
import com.solution.common.service.BaseService;

/**
 * 角色管理业务层接口
 * 
 * @author yaoyu
 * @date 2017年3月28日 下午12:02:44
 */
public interface RoleService extends BaseService<RoleEntity> {

	/**
	 * 查询用户登录某系统的角色列表
	 * 
	 * @param param
	 * @return
	 * @author llp
	 * @date 2017年4月18日 上午11:54:38
	 */
	public List<RoleEntity> listRole(Map<String, Object> param);
	
	/**
	 * 添加角色
	 * @author james
	 */
	public long saveRole(RoleEntity roleEntity, String resourceIds);

	/**
	 * 修改角色
	 * @author james
	 */
	public int updateRole(RoleEntity roleEntity, String resourceIds);

	/**
	 * 修改角色状态
	 * @param roleEntity
	 * @param roleResourceMap
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月9日 下午12:59:49
	 */
	public int updateRoleStatus(RoleEntity roleEntity);

	/**
	 * 分页查询角色
	 * 
	 * @param pageBean
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月9日 下午1:01:35
	 */
	public PageBean getRoleList(PageParam pageParam, Map<String, Object> paramMap);

	/**
	 * 根据id查询角色详细信息
	 * 
	 * @param id
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月9日 下午1:02:30
	 */
	public RoleEntity getRoleById(Long id);

	/**
	 * 删除角色
	 * 
	 * @param id
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月9日 下午1:05:08
	 */
	public int deleteRole(Long id);

	/**
	 * 验证角色名编号是否存在
	 * 
	 * @param roleName
	 * @param roleCode
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月13日 上午11:18:14
	 */
	public Long getRoleByNameOrCode(String roleName, String roleCode);

	/**
	 * 查询所有角色信息
	 * 
	 * @param userId
	 *            用户ID
	 * @return
	 * @author llp
	 * @date 2017年4月14日 上午8:55:29
	 */
	public List<RoleEntity> listAllRoleList();

	/**
	 * 查询用户的角色信息
	 * 
	 * @param userId
	 *            用户ID
	 * @return
	 * @author llp
	 * @date 2017年4月14日 上午8:55:29
	 */
	public List<RoleEntity> listUserRole(Long userId);
	/**
	 * 查询用户可分配及已分配的角色列表
	 * @param dealerId 经销商ID
	 * @param userId 用户ID
	 * @return 角色列表
	 */
	public List<RoleEntity> listRoleWithChkflagForUser( Long userId);
	
	/**
	 * 更新角色名称
	 * @param roleId 角色编号
	 * @param roleName 角色名称
	 * @param roleIntro 
	 * @return 更数的行数
	 */
	public int updateRoleName(Long roleId,String roleName, String roleIntro);
	
	/**
	 * 查询用户是否是某角色
	 * @param userId 用户ID
	 * @param roleId 角色ID
	 * @return true 有  false 无  
	 * @author xu_cc  
	 * @throws Exception exception
	 * @Date 创建时间：2018年2月5日 下午3:27:29
	 */
	public boolean checkUserRoleChkFlg(Long userId, Long roleId);

	/**
	 * 删除角色
	 * @param parseLong
	 * @return
	 */
	public int logicDeleteRole(long parseLong);
}
